package com.mall.mapper;

import com.mall.entity.OrderItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单商品数据访问层
 * 
 * @author Mall Team
 */
@Mapper
public interface OrderItemMapper {
    
    /**
     * 插入订单商品
     */
    int insert(OrderItem orderItem);
    
    /**
     * 批量插入订单商品
     */
    int insertBatch(@Param("orderItems") List<OrderItem> orderItems);
    
    /**
     * 根据ID删除订单商品
     */
    int deleteById(Long id);
    
    /**
     * 更新订单商品
     */
    int updateById(OrderItem orderItem);
    
    /**
     * 根据ID查询订单商品
     */
    OrderItem selectById(Long id);
    
    /**
     * 根据订单ID查询订单商品列表
     */
    List<OrderItem> selectByOrderId(Long orderId);
    
    /**
     * 根据订单ID查询订单商品列表（包含商品信息）
     */
    List<OrderItem> selectByOrderIdWithProduct(Long orderId);
    
    /**
     * 根据订单ID删除订单商品
     */
    int deleteByOrderId(Long orderId);
    
    /**
     * 批量删除订单商品
     */
    int deleteBatchByIds(@Param("ids") List<Long> ids);
    
    /**
     * 根据商品ID查询订单商品
     */
    List<OrderItem> selectByProductId(Long productId);
    
    /**
     * 统计商品销量
     */
    Long countSoldByProductId(Long productId);
    
    /**
     * 获取热销商品统计
     */
    List<OrderItem> selectHotProducts(@Param("limit") Integer limit);
}